package cn.edu.sgu.www.mhxysy.service.role;

import cn.edu.sgu.www.mhxysy.dto.role.RoleAttributeUpdateDTO;
import cn.edu.sgu.www.mhxysy.dto.role.RoleJiadianDTO;
import cn.edu.sgu.www.mhxysy.dto.role.RoleJiadianRenameDTO;
import cn.edu.sgu.www.mhxysy.dto.role.RoleJiadianUpdateDTO;
import cn.edu.sgu.www.mhxysy.entity.role.RoleJiadian;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @author 沐雨橙风ιε
 * @version 1.0
 */
public interface RoleJiadianService {

	/**
	 * 重命名角色加点方案
	 * @param renameDTO 角色加点方案信息
	 */
	@Transactional(rollbackFor = Exception.class)
	void rename(RoleJiadianRenameDTO renameDTO);

	/**
	 * 开启角色加点
	 * @param roleId 角色ID
	 * @param jiadianSchema 加点方案
	 */
	@Transactional(rollbackFor = Exception.class)
	void enable(String roleId, Integer jiadianSchema);

	/**
	 * 解锁角色加点方案
	 * @param roleId 角色ID
	 * @param jiadianSchema 加点方案
	 */
	void unlock(String roleId, Integer jiadianSchema);

	/**
	 * 修改角色加点和属性
	 * @param jiadianUpdateDTO 角色加点
	 * @param attributeUpdateDTO 角色属性
	 */
	@Transactional(rollbackFor = Exception.class)
	void update(RoleJiadianUpdateDTO jiadianUpdateDTO, RoleAttributeUpdateDTO attributeUpdateDTO);

	/**
	 * 通过角色ID查询角色加点
	 * @param roleId 角色ID
	 * @return List<RoleJiadian>
	 */
	List<RoleJiadian> selectByRoleId(String roleId);

	/**
	 * 查询角色加点
	 * @param jiadianDTO 查询条件
	 * @return RoleJiadian
	 */
	RoleJiadian selectJiadian(RoleJiadianDTO jiadianDTO);
}